﻿using System.Text.Json.Serialization;

namespace Plugin.RsCms.Models
{
	public class RouteMenuItem
	{
		/// <summary>
		/// 当前路由的路径，会与配置中的父级节点的 path 组成该页面路由的最终路径；如果需要跳转外部链接，可以将path设置为 http 协议开头的路径。
		/// </summary>
		[JsonPropertyName("path")]
		public string Path { get; set; }
		/// <summary>
		/// 影响多标签 Tab 页的 keep-alive 的能力，如果要确保页面有 keep-alive 的能力，请保证该路由的name与对应页面（SFC)的name保持一致。
		/// </summary>
		[JsonPropertyName("name")]
		public string Name { get; set; }
		/// <summary>
		/// 渲染该路由时使用的页面组件
		/// </summary>
		[JsonPropertyName("component")]
		public string Component { get; set; } = "LAYOUT";
		/// <summary>
		/// 重定向的路径
		/// </summary>
		[JsonPropertyName("redirect")]
		public string Redirect { get; set; } = null;

		/// <summary>
		/// 子菜单的配置
		/// </summary>
		[JsonPropertyName("meta")]
		public RouteMenuItemMeta Meta { get; set; }

		/// <summary>
		/// 子菜单的配置
		/// </summary>
		[JsonPropertyName("children")]
		public RouteMenuItem[] Children { get; set; }
	
	}
	/// <summary>
	/// 主要用途是路由在菜单上展示的效果的配置
	/// </summary>
	public class RouteMenuItemMeta
	{
		public RouteMenuItemMeta()
		{

		}
		public RouteMenuItemMeta(string title)
		{
			Title = title;
		}
		/// <summary>
		/// 路由在菜单上展示的标题
		/// </summary>
		[JsonPropertyName("title")]
		public string Title { get; set; }
		/// <summary>
		/// 路由在菜单上展示的图标
		/// </summary>
		[JsonPropertyName("icon")]
		public string Icon { get; set; } = null;

		/// <summary>
		/// 决定该路由在菜单上是否默认展开
		/// </summary>
		[JsonPropertyName("expanded")]
		public bool Expanded { get; set; }
		/// <summary>
		/// 路由在菜单上展示先后顺序，数字越小越靠前，默认为零
		/// </summary>
		[JsonPropertyName("orderNo")]
		public int OrderNo { get; set; }


		/// <summary>
		/// 决定该路由是否在菜单上进行展示
		/// </summary>
		[JsonPropertyName("hidden")]
		public bool Hidden { get; set; }

		/// <summary>
		/// 如果启用了面包屑，决定该路由是否在面包屑上进行展示
		/// </summary>
		[JsonPropertyName("hiddenBreadcrumb")]
		public bool? HiddenBreadcrumb { get; set; }

		/// <summary>
		/// 如果是多级菜单且只存在一个节点，想在菜单上只展示一级节点，可以使用该配置。请注意该配置需配置在父节点
		/// </summary>
		[JsonPropertyName("single")]
		public bool? Single { get; set; }

		/// <summary>
		/// 内嵌 iframe 的地址
		/// </summary>
		[JsonPropertyName("frameSrc")]
		public string FrameSrc { get; set; } = null;

		/// <summary>
		/// 内嵌 iframe 的地址是否以新窗口打开
		/// </summary>
		[JsonPropertyName("frameBlank")]
		public bool? FrameBlank { get; set; }

		/// <summary>
		/// 决定该路由在菜单上是否默认展开
		/// </summary>
		[JsonPropertyName("keepAlive")]
		public bool KeepAlive { get; set; } = true;


	}
}
